home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Linux Cubed Series 7: Sunsite
/
Linux Cubed Series 7 - Sunsite Vol 1.iso
/
system
/
manual-p
/
vh-man2h.000
/
vh-man2h
/
vh-man2html-1.3
/
mansec
< prev
next >
Wrap
Text File
|
1996-05-03
|
5KB
|
147 lines
#!/usr/bin/awk -f
#
# Generate an index into a manual section by using find.
# Michael Hamilton <michael@actrix.gen.nz>
#
BEGIN {
OFS="";
section = ARGV[1];
"echo $PPID" | getline pid;
if (section !~ /^[0-9]$/ && section != "all") {
print "Content-type: text/html\n\n";
print "<head>";
print "<title>Manual - Illegal section</title>";
print "<body>";
print "Illegal section number '" section "'." ;
print "Must be 0..9 or all";
print "</body>";
exit;
}
whatis_db = "/usr/man/whatis";
cache_dir = "/var/man2html";
cache_file = "manindex-" section ".html";
cache = cache_dir "/" cache_file;
cache_tmp = cache "_" pid;
buffer_tmp = cache "_items_" pid;
# Find out the man path
"/usr/bin/man -w" | getline man_path
man_path = man_path ":";
gsub(":", " ", man_path);
# See if anything is out of date.
if (section == "all") {
if (system("test -f " cache) == 0) {
cmd = "/usr/bin/find " man_path " -maxdepth 1 -name 'man[0-9]' -newer " cache;
cmd | getline need_update;
}
else {
need_update = 1;
}
}
else {
if (system("test -f " cache) == 0) {
cmd = "/usr/bin/find " man_path " -maxdepth 1 -name man" section " -newer " cache;
cmd | getline need_update;
}
else {
need_update = 1;
}
}
cmd = "/usr/bin/find " cache_dir " -maxdepth 1 -name " cache_file " -newer " whatis_db;
cmd | getline predone;
if (need_update != "") {
sec_name[1] = "User Commands";
sec_name[2] = "System Calls";
sec_name[3] = "Library Functions";
sec_name[4] = "Special Files";
sec_name[5] = "File Formats";
sec_name[6] = "Games";
sec_name[7] = "Miscellany";
sec_name[8] = "Administration and Privileged Commands";
sec_name["all"] = "All available manual pages";
# Print heading
print "Content-type: text/html\n\n" > cache_tmp;
print "<html>\n<head>" > cache_tmp;
print "<title>Manual Pages - Names: " section ". " sec_name[section] "</title>"> cache_tmp;
print "</head>\n<body>" > cache_tmp;
print "<h1>Manual Pages - Page Names</h1>" > cache_tmp;
print "<h2>Section " section ": " sec_name[section] "</h2>" > cache_tmp;
"hostname" | getline hostname;
"date" | getline date;
print hostname " (" date ")" > cache_tmp;
if (section != "all") {
sec_sub_dir = "/man" section;
}
else {
sec_sub_dir = "/man*";
}
gsub(" ", sec_sub_dir " ", man_path);
print "<p>Manual pages found under " man_path "." > cache_tmp;
# Find any man[0-9]/filenames
while ("/usr/bin/find " man_path " -follow -type f -printf '%f\n' | sort -f " | getline manpage) {
# Check for new letter of alphabet
letter = tolower(substr(manpage,1,1));
if (letter != last_letter) {
last_letter = letter;
letter_index[++num_letters] = letter;
# Start a new alphabetic heading
print "<h2> <a name=\"", letter, "\">", toupper(letter), "</a></h2>" > buffer_tmp;
# Print out alphabetic quick index and other links
}
# Split page.n into "page" and "n" and generate an entry
match(manpage, /[.][^.]+$/);
title = substr(manpage, 1, RSTART - 1);
print "<a href=\"http:/cgi-bin/man2html?", title, "+", section, "\">", title, "(", substr(manpage, RSTART + 1), ")</a>" > buffer_tmp;
}
close(buffer_tmp);
print "<p>" > cache_tmp;
# Print out alphabetic quick index and other links
for (i = 1; i <= num_letters; i++) {
print "<a href=\"#" letter_index[i] "\">" toupper(letter_index[i]) "</a>" > cache_tmp;
}
print "<p><hr>" > cache_tmp;
print "<a href=\"http:/cgi-bin/man2html\">Return to Main Contents</a>" > cache_tmp;
print "<p>Other sections:" > cache_tmp;
for (i=1; i<=8; i++) {
if (i != section) { # Dont print an entry for the section we are in
print "<a href=\"http:/cgi-bin/mansec?" i "\">" i ". " sec_name[i] "</a> " > cache_tmp;
}
}
print "<hr><p>" > cache_tmp;
# Print out the accumulated index entries
while ((getline < buffer_tmp)) print > cache_tmp;
print "<hr><p>" > cache_tmp;
# Print out alphabetic quick index and other links
for (i = 1; i <= num_letters; i++) {
print "<a href=\"#" letter_index[i] "\">" toupper(letter_index[i]) "</a>" > cache_tmp;
}
print "<hr>" > cache_tmp;
print "<p><a href=\"http:/cgi-bin/man2html\">Return to Main Contents</a>" > cache_tmp;
print "<p>Other sections:" > cache_tmp;
for (i=1; i<=8; i++) {
if (i != section) { # Dont print an entry for the section we are in
print "<a href=\"http:/cgi-bin/mansec?" i "\">" i ". " sec_name[i] "</a> " > cache_tmp;
}
}
print "</body>\n</html>" > cache_tmp;
system("/bin/mv " cache_tmp " " cache);
system("/bin/rm -f " buffer_tmp);
}
system("/bin/cat " cache);
exit;
}